home *** CD-ROM | disk | FTP | other *** search
/ Compute! Gazette 1985 May / 1985-05.d64 / shell sort_64 (.txt) < prev    next >
Commodore BASIC  |  2022-09-20  |  934b  |  30 lines

  1. 100 m=8192:gosub500:goto150
  2. 110 z=m+int(y/8)*320+int(x/8)*8+(yand7)
  3. 120 pokez,peek(z)ort%(xand7):return
  4. 130 z=m+int(y/8)*320+int(x/8)*8+(yand7)
  5. 140 pokez,peek(z)andnott%(xand7):return
  6. 150 fori=0to7:t%(7-i)=2^i:next
  7. 160 sys49152:poke53272,peek(53272)or8:poke53265,peek(53265)or32
  8. 170 s=99:diml%(s),m%(s)
  9. 180 fort=1tos:l%(t)=rnd(0)*s*3+12:x=l%(t)
  10. 190 m%(t)=2*t:y=m%(t):gosub110:next:ti$="000000":g=int(s/2)
  11. 200 n=0:fori=1tos-g
  12. 210 ifl%(i)>l%(i+g)thengosub280:t=l%(i):l%(i)=l%(i+g):l%(i+g)=t:n=1
  13. 220 next:ifn=1then200
  14. 230 g=int(g/2):ifg>=1then200
  15. 240 t$=ti$:poke198,0
  16. 250 geta$:ifa$=""then250
  17. 260 poke53265,peek(53265)and223:print"[147]":poke53272,21
  18. 270 prints"items sorted in "mid$(t$,3,2)":"right$(t$,2)".":end
  19. 280 y=m%(i):x=l%(i):gosub130:y=m%(i+g):x=l%(i+g):gosub130
  20. 290 y=m%(i):x=l%(i+g):gosub110:y=m%(i+g):x=l%(i):gosub110:return
  21. 500 x=0:fori=49152to49190:reada:x=x+a:pokei,a:next
  22. 510 ifx<>6678thenprint"error in data statements.":stop
  23. 520 return
  24. 530 data 169,32,133,252,162,32,169
  25. 540 data 0,168,145,251,200,208,251
  26. 550 data 230,252,202,208,246,169,4
  27. 560 data 133,254,170,160,0,169,16
  28. 570 data 145,253,200,208,251,230,254
  29. 580 data 202,208,246,96
  30.